Skip to main content

Full text of "ZXir QLive Alive"

See other formats



^itll JVHbr Mtth ^ir Oritfte! ^ 1 
^tntlatr fflnriitftmerxgatt fflgir drmtpg fflgfeglitier 


(Chairman 








liiiiiiaris 


i 1 



MEMORY MAP 



ADDRESS 

2 
3 

3 
4 
6 
7 
8 
8 

9 



10 
10 
11 
13 
14 



ROUTINES 



19 



Information and Chairmen — Trea$ury Note$ 

Input/Output — byAbedKahale 
Puzzle — Peter Liebert-Adelt 
Sinclair List — Jay Shepard 
Sinclair Show— F WD Computing 
West Sinclair Show — Tim Swenson 
Sinclair E-Mail List 

eoODBTE Sinclair- fwd Computing 

From The Chairman's Disk — Donald Lambert 

FILES 

FOP_OVER — Al Feng 
LarKen/PASCAL — David Solly 
LarKen/HiSoft — David Solly 
Speed Comparison - 2068 — David Solly 

QL Hacker's Journal — Tim Swenson 
SUBROUTINES 

Unclassified Ads 




8¥ 9 




y 









infpir^llMP§Ihiiip 




ZXir QLive Alive! © 
Established 1991 The Timex/Sinclair NorthAmerican User Groups Newsletter 



T/SNUG Information 



We wish to support the following 
platforms: ZX-80/81, TS-1000, 
Spectrum, TS-2068, Z88 and QL. If 
you have any questions about any of 
these fine Sinclairs, contact the: 

Chairman 

Chief Motivator 
Donald S. Lambert (ISTUG) 

Vice-Chairmen 

Tape & JLO PD Library 

D. G Smith 
415 Stone St. 
Johnstown, PA 15906 
814 535-6998 

Z88 Library 

Dave Bennett (HATSUG) 
1275 Timber View Dr 
Mechanicsburg, PA 17055-9146 
717 732-4374 

QL Hacker's Journal 

Timothy Swenson 
2455 Medallion Dr 
Union City, CA 94587-1914 
swensontc@geocities. com 

TS-2068 

Rod Humphreys (VSUG) 
10984 Collins PI 
Delta, BC V4C 7E6 Canada 
604 583-2819 

QL PD Library 
John Donaldson (CATUG) 

835 Foxwood Cir. 
Geneva, JL 60134-1631 
630 232-6147 

AERCO & Z80 Emulator 
Keith Watson 
41634 Amberly Dr. 
Mt. Clemens, MI 48038 

BBS — ==GAT0R= — 
Bob Swoger (CATUG) 
613 Parkside Cir. 
Streamwood, JL 60107-1647 
630 837-7957 Work 847 576-8068 

Any of the above can also be 
reached by E-Mail through the 
Club BBS 847 632-5558 



ZXir QLive Alive! 

Is the newsletter of T/SMJG, the 
Timex/Sinclair North American User 
Groups, providing news and 
software support to the T/S com- 
munity in a VOLUME of four 
newsletters per year; beginning with 
the Spring (March) issue. 



T/SNUG's main goal is to 
preserve and encourage the 
use of Sinclair computers 

by providing an open 
forum for the exchange of 
knowledge, building and 
maintaining of software 
libraries. Providing 
vendors, repair service and 
members with free ad 
space 



It is the user groups and individual 
subscribers, rather than the vendors, 
that provide the pecuniary support 
for this newsletter Vendors and 
developers receive this newsletter 
free of charge, though contribution 
from vendors and user groups is 
gratefully accepted. Please support 
our vendors and service providers 
whenever possible. 

If you have a problem or you have 
solved a problem, please share it with 
the rest of us No problem will be 
considered unimportant 

Editor/Treasurer 

Publisher 



ou can keep T/SNUG alive by 
an annual contribution of $12 
for one VOLUME made payable to 
Abed Kahale. Send check to> 
ABED KAHALE 
3343 S FLAT ROCK CT 
SIERRA VISTA AZ 85650-6874 
520 378-3424 



J 



Back copies are available for 
$1.00 each postpaid. 

<As of Dec. 15, 1998, we have a 
balance of $717.03 



Article Contributions ! 

Send in your articles by tape or disk and your 
inputs to — 

DONALD S LAMBERT 
1301 KIBLINGER PL 
AUBURN IN 46706-3010 
Phone 219 925-1372 
By hardcopy, e-mail or modem ( 3-33.6) to: 
Abed Kahale 
E-mail; AKahale@compuserve.com 



elco 

Gerald Anson 

Louis Floril 
David Solly 



G At O & 4 S 



To better inform the Sinclair Community, 
four 24-hour a day BBSs are now provided to serve 
you. You are encouraged to exchange mail and use 
the files sections of these boards. Bulletins and ads 
are available to all. 

Q-BoxBBS 810 254-9878 

Utica, Michigan 
SCC Sever Jose Moreno 
http ://members.tripod. com/~helpme/ 
SOL BBS 520 882-0388 

Tucson, Arizona 
Club BBS 847 632-5558 
Arlington Heights, Illinois 

If you know the Internet E-Mail address of a 
Sinclair user, but do not have access to Internet, 
simply address your E-Mail to GATOR Sinclair on 
the 24-hour Club BBS and include the name and E- 
Mail address of the user you wish to reach. Then 
check the Club BBS from time to time if you expect 
a reply 

We encourage you to exchange mail and 
contribute to the UPLOAD section Call 
and register using your first, last name and phone 
number along with a password you won't forget. 
Write It Down! Do not try to do anything else at 
this time. 

When you call-in the next time, you will have 
Level 5 security and be able to enjoy full 
user privileges The BBS has smaller sections 
called conferences. Select "J " for "Join a Confer- 
ence". Select "TIMEX" to get into the Sinclair 
Section. The mail you then read will only be from 
other T/S users. Use extension .ART for articles, 
.ADS for ads and .NWS for news when 
UPLOADing. 

For help, contact the SYSOP, Bob Swoger, by 
leaving a message, mail, E-Mail or phone 
CENG1 08@email mot com 



ZXir QLive Alive! 



2 



Winter 1998 



Input/Output 



i 



I got the newsletter, ZQA! - another great job! Nice 
comment made about the Arizona scenery! 

J. Shepard and his wife Karen and son Adam - are 
coming out to the Glenside picnic this Saturday. Sauter and 
Herre will be here also. 26 people expected. 

— ==GATOR==— 

This has been like a very long lost weekend for me 
just realized that I haven't received any 
Timex mages for a while. I am 
guessing that my subscription elapsed 
and I was more concerned with hands 
that didn't work (rheumatoid arthritis). 
How much to get reinstated and collect 
backs issues that I have missed? 

By the way thanks for the humor 
messages. You will notice that this is a 
different e-mail address and I would 
rather use it. Thanks again. 

Les Cottrell 



I was reading what Bob Hartung 
wrote about the nice photos you put in 
the newsletter and got to thinking that 
maybe T/SNIJG could "spring" for a 
color printer for you so you could send 
us those beauties in color! Heck, you 
can get a good color printer these days 
for around $200 and all you would have 
to do is print out as many title pages as 
you needed and still do the rest of it on 
a copier. I suppose it might be more 
hassle than what you're doing now, but 
it would sure be pretty neat. Anyway, 
if it takes a vote of the membership I'll 
cast mine in favor. ;-) 

I've gotten a little more interest in the RMG items, but 
it has really slowed down lately. That's OK, as I've been 
pretty busy at work. Summer is the busy time for bridge 
and highway construction and I've been putting in a lot of 
hours. It's just now starting to slow down a little Right 
now I'm in charge of 5 projects with a total cost of about 
$23 million. Kind of mind-boggling sometimes. I still 
haven't heard from Dan Elliott since he sent me the card 
letting me know he was getting to work on the LarKen and 
2068 I sent him. That's been at least 2 months ago. I think 
I'll give him a call tonight to see what's going on. Anyway, 
thanks for your work on ZQA and helping keep these 
computers alive. 

Take care, Jack Boatwright 

/ Wish, I wish, I wish we could have color pictures 
in the Newsletter, but the cost will be prohibitive at 

$1.00 extra per one copied page. Etc etc 

Hello Abed, ~ 

I know the cartridges are pretty expensive, but it still 
would be neat to see those pictures in color! Tell you what, 
Til chip in some $ if you think it would be something you 
might do. 

I still haven't heard from Dan Elliott since he sent me 
the card letting me know he was getting to work on the 



A ZQA! reader advised the editor of 
his displeasure because of 
publishing his opinions in a 
previous issue. His Email 
contained material related to the 
Timex/Sinciair community, so it was 
published. He did not advise that 
the material was not for publication. 
ZQA! Newsletter is for and by T/S 
groups and anything related to T/S 
will be published unless the person 
so indicates that it is not intended 

for publication. 
This Newsletter is not the National 
inquirer or NewsWeek. Most of us 
know or are familiar with those 
whose names appear in the 
Newsletter— the T/S family group. 
The Editors feels that any and all 

T/S related material will be 
published uniess noted otherwise. 

'Editor 



ago I think I'll give him a call tonight to see what's going 
on. 

Yes, you better give him a call, he either forgot 
about you or it is a bigger job than he thought. 

I did call him and got the answering machine 
Hopefully I'll hear something more from him soon. In an 
email I got from Jay a while back I thought he indicated 
that he was going to send one of the ones 
that Rod sent him, but so far I haven't seen 
it either I haven't had enough time to set up 
the Qliger with LarKen DOS that I bought 
the last time I picked up stuff at Rod's. I 
should just make sure it works. 

Yes, I would like to be on your humor 
e-mailng list Some of it is pretty funny 
With the way things are going in 
Washington these days, we need some 
humor Later, 

Jack Boatwright 



To: Gil Parrish 

1 07765 1161 @compuserve corn 
Cc: akahale@compuserve.com 

Subject: ZQA! Vol. 8 No. 



Pu zz le 



LarKen and 2068 I sent him. That's been at least 2 months subject line 



Hi Gil and Abed, 

I'm writing my answer on your 
"puzzle-request" in ZXir QLive Alive! as 
an article, so Abed can use it for the next 
issue. 

In ZQA! Autumn 1998 on page 6, Gil 
Parrish asked for help about a video 
interface. Of course it's a little bit difficult 
to do some telediagnosis from good old Germany, but I 
think I will not be wrong with the following information: 

Your interface is a colour-interface-module for 
PC8300. We have some of them in ZX-TEAM too. 
Plug the interface into your PC8300, connect the short lead 
with the monitor jack of PC8300 and connect your Colour 
TV set with the UHF connector, channel 36, or your colour- 
monitor with the monitor connector. 

But if this will not be successful, first have a look into 
your Colour-interface. If you find a crystal with 3 579 MHz 
it will be a NTSC interface for the use in the USA. If you 
find a 4.433 MHz crystal, it is a PAL-type and you can't use 
it in the USA. 

The interface works as follows: It has IK Byte RAM- 
memory in the area 8192 -9216, used as the colour-file. In 
PC8300 the display-file address is fixed and not floating 
like in ZX-81. This is important for the use of the colour- 
interface. The colour module takes the display-file 
information from the monitor output of the PC8300 and 
will "mix" it with the colour-file from the interface to build 
the colour-signal. 
Happy ZXing from Germany 
yours "sinclairly" Peter Liebert-Adelt 
P.S. join the ZX-81 mailing-list! send an email to: 
"listserv@jarasoft.xs4all..nl" with "subscribe ZX81" in the 



ZXir QLive Alive! 



3 



Winter 1998 



e-mail: p liebert@t-online.de 
http://home.t-online.de/home/pliebert/zx-team htm 
Peter Liebert-Adelt 
Luetzow Str 3 
D-38102 Braunschweig 
Germany 

Amateur Radio: DK4BF@DB0FC.#NDS.DEU.EU 

Hello Abed 

I understand that you are the man to contact 
concerning membership to T/SMJG and subscribing to the 
newsletter. I was BBS sysop and software librarian for the 
Ottawa-Hull Timex/Sinclair User Group until it folded for 
good around 1993 . I also wrote articles for our newsletter 
as well as for Your Sinclair, Time Designs and Update! 

I sometimes use a real live T/S 2068 but for the most 
part I am now using Gerton Lunter's ZX Spectrum emulator 
whenever I need to run Sinclair software. 

I still have in my possession all the software — which 
has been converted to the LKDOS platform for the most 
part — and most of the periodicals and news letters that 
were owned by the club. I would be happy to share 
whatever I (legally) can with whomever is interested. 

I am keenly interested in programming HiSoft 
PASCAL for the ZX Spectrum which I run on both the T/S 
2068 which has been fitted with a ZX Spectrum emulator 
and on Gerton Lunter's emulator. At the moment, I have 
not written any serious applications in HiSoft PASCAL. 
Most of what I have written has been done out of curiosity 
to see if the old T/S can do such-and-such a thing. For the 
most part I have succeeded! I have found HiSoft PASCAL 
to be very versatile and able to do as much as can be done 
in Sinclair BASIC and a heck of a lot faster. Most recently, 
I have written a function for creating UDGs within a 
PASCAL program. I hope that I can find a kindred spirit 
among the members of T/SNUG. I close in the hope of 
hearing from you soon. 

David Solly 

ac3 5 5@freenet carleton . ca 
Ottawa, Ontario, CANADA 
Voice: (613) 731-2120 

My apologies to all especially to you, Abed, as it 
relates to delayed or unfulfilled space in ZQA. The bulk of 
the shipment is cassette SW, a lot of which is unlabeled or 
loose (unboxed) where only verification thru loading would 
prove its value Is this a daunting task or what? Anyway, I 
decided part of my problem was trying to find this stuff on 
the list, when it wasn't even there or what I had was a 
partial to the list. 

Also, many of the items need to have a description to 
complete their value and then there's the desire to know if it 
works or if two or more, does one work and the other is 
only good for parts and how to decide who gets what or do 
I just reach in and ship and let whomever get whatever. 

13 QL's this was the kicker, not on the list and 

some work, haven't tested all 

II 2068 some work didn't test all 

31 1016 16K RAM PAK in original boxes 

11 Magicbridge 16K RAM w/ made in Gr. 

Britain on box 

1 Memotech 32K RAM w/ a feed thru so you 
stack another 16K/32K on w/ docs 

3 cases 48ea 2040 thermal paper on unopened 

ZXir QLive Alive! 4 



- tested one Ok. 

1 Miracle-disk adapter for Trump Card (QL 
HW) 

4 2040 thermal printer - in orig. boxes like new 
8 Alphacom 32 thermal printer. 

2 A&J 2000 drives w/ 30 wafers 

13 LKDOS A3 dock board EPROM's 
13 EZKEY keyboard interface PCB - no chips 
just the board 
I included the last two items to show the variety of the 
misc. stuff that's not listed. There are dock boards w/chips 
that I have no way of knowing what they are except that 
two are marked w/Oliger's name. One says Oliger User 
Cartridge The other JLO 8084. I could throw them into 
a 2068 and see what comes up on the screen Or they could 
be fried and could fry a good 2068????? And all of this 
takes time. Later, 

J Shepard 

Jshepard@netins.net 
John J Shepard HI 

281 130th St 
Ogden I A 50212 

515 846-6378 

Hiroshima '45 - T/S '83 - Chernobyl '86 - Win'95 & Win'98 
Hi Abed; 

I finally managed to hook myself up with a 2068 
(thanks to Frank Davis) In order to help with my 
addiction, I've set up a email list on my server. I'm also 
working on a website, but that's a few weeks off from being 
online (digitizing manuals, researching components, and 
whatnot). 

I'm writing to invite you and anyone interested 
within the T/SNUG crew aboard. To subscribe, do 
the following: Send an email message from the 
account you want to subscribe to 

Majordomo@unixville.com 
with no subject and the content of the message as 
follows: subscribe 2068. 

You'll receive a confirmation reply notice from 
the list mail program; following the instruction to 
complete the signup. If you need to contact the list 
administrator, send email to 

2068-owner@unixville.com 

I was hoping that you'd put this little note in the 
T/SNUG newsletter. 

If anything, let me know when the ire meetings 
are, and I'll try to make an appearance. Also, how can 
I subscribe to get the newsletter? Thanks! 

Lo uis F i orit 2068 List Admin 

See Your Hometown As Viewed From Space 

Satellite Images of the USA now online at 
http://observe.iw.nasa.gov/nasa/gallery/landsatapp/landsata 
ppdesc.html 

Ever wonder what your hometown looks like from 
outer space? 

You've heard stories about China's Great Wall being 
visible from the Moon (stories that, well, aren't true), but 
now you really can check out the Earth from far above. In 
an online article, NASA's Observatorium lets you observe 
the continental United States — including your town — 
through "Satellite Images of the USA." 

Winter 1998 



It's online now at 

http://observe.iw.nasa.gov/nasa/gallery/landsatapp/landsata 
ppdesc.html 

Satellite Images of the USA is a collection of Landsat 
satellite images that allows Web surfers to take a virtual 
tour of America from high above. At your fingertips are 
images of the US you've probably never seen before - the 
country's color, water, vegetation, forests, cities, and more, 
as seen from an orbiting space satellite. 

After downloading the images (they're 130K, so allow 
some download time), visitors to NASA's Observatorium 
can view the US from more than 700 mile s above Earth 
The exhibit provides a key for viewer interpretation of the 
images, and lets you explore, from an outer space 
perspective, specific are as of the country in simple point- 
and-click fashion. 

Its homepage is located online at 

http://observe.iw.nasa.gov20 
CONTACT: Scott Gillespie 
NASA's Observato rium curator@observe.iw.nasa.gov 

Mike and John, Don and Bob, 

I am getting ready to get out of the Z88 and the QL 
business on computers. My Amiga business is so large I do 
not have time for all of them. I am willing to part with a 
large^ amount of stuff, very cheaply, such as MacLinks for 
$5, Serial cables for $3, one Meg RAMs for $80, etc. If 
interested let me know. I have a South American who has 
expressed an interest but have told him I want to check with 
you USA first. Contact me soon on this as time is 
important. A good chance to get a lot of stuff very cheap 
and keep it here in the USA. 

Frank Davis 

FWD Computing 

fdavis@iquest.net 
http ://members. tripod. com/~F WDcomp uting/ 

Just got this this evening, Abed. I'm shocked! I don't 
know that I want this out in the news just yet until we hear 
more and think th is over. — ==GAT0R== — 

I should have done what I just did before sending thai 
last note yesterday, but anyway here it is: 

To get a better understanding of what's going on with 
Frank and some great news at the same time you need to 
visit his Web site 

http ://members.tripod ., com/~FWDcomputing/index. html 
you won't believe what's there. I'm not sure how it all 
relates to his offer to Fink, which doesn't please me, but I'll 
bet you can call him, Bob. Please do. The bottom line is 
that what's on his web pages provide info that could excite 
all of us orphan owners and could reinvigorate the club and 
the members. Let us know what you find. I'm writing for 
the Z-88 catalog of ritajean@hotmail.com next. Later, 

J. Shepard 

Hi Abed, 

The banks, post offices and exchange house have 
conspired to make payment of membership dues very 
difficult. 

1) US post offices no longer accept Canadian postal money 
orders - even when drafted for US dollars. 

2) The banks charge an outrageous exchange rate on small 
amounts and $4.50 handling fee. An international bank 
money order for US $12 is about Can $22.50! 

3) The exchange houses will not sell less than US $20 in 
US dollars. Therefore, I was thinking of sending you: 



1) A personal check for Can $18 plus barter, or, 

2) Can $15 in bills plus barter. 
As barter, I have about 5 articles on HiSoft PASCAL - 

- both programs and programming— in WordPerfect 5.1 
format which I can put on a diskette and send with my 
subscription. There is probably enough material to create a 
whole issue dedicated to PASCAL programming on the T/S 
2068. 

Please let me know what you want. 
Please give me your snail mail address so that I can 
mail you a copy. 

David Solly 

1545 Alta Vista Dr. Apt. 1402 
Ottawa, Ontario 
Canada K1G3P4 
/ would like to have the above in the next ZQA! 
issue if you don't mind? 

I have no problem with that. 
Take care. David Solly ae355@freenet carleton.ca 

O ttawa, Ontario, CANADA Voice: (6 1 3) 73 1 -2 1 20 

>"If anything, let me know when the ire meetings are, and 
I'll try to make an appearance." 

/ am missing something here. Please bring me up 
to date. What/Who is IRC? 

Hehe, I'm confusing groups here... There is a NY 
Sinclair club that has monthly meetings in NY and 
simultaneously on IRC (internet relay chat). I think they 
get together once a month, either the first or second Sunday 
of the month. But I'm not sure. If I find out I'll let you 
know, OK? 

Thanks Louis Florit 

Hi Abed, ~ 

I'm writing from work because I just remembered 
something I wanted to tell you and have been forgetting. 
TEJ Computer Services is still alive, at least a little. The 
owner is Terrance Jarvis and he still has TS items. The 
reason my mail came back is that he now has a different 
address 

I've bought a few of his 2068 software programs for 
$4 each. He stated that he had hardware and software for 
TS computers. I've been trying to get a list of his items for 
quite some time now, but haven't seen one yet. I'm not 
really sure if he wants to be re-listed in ZQA! or not. I 
mentioned to him that his listing was dropped and that he 
should contact you, but I don't think he has. 

If you want to contact him his email is: tej@jps.net 

Jack Boatwright 

From: "John J. (Jay) Shepard, III" <jshepard@nltm7.net 
Subject: Fw: Z-88 catalog 
Date: Mon, 12 Oct 1998 21:35:09 -0500 
>Thought you two might like to read this. I got her email 
address as a link on Frank's web-site I included the garbage 
it took to get it here as I've never seen that much before. J 
»From: Rita Willis <ritajean@hotmail.com 
»Subject: Re: Z-88 catalog 

Please send me your catalog. I'm most interested in 
being able to interface my V.4 Z-88 with my PC and QL. 
Snail mail address is: 281 - 130th ST., Ogden, IA, 50212. 
Fax number is same as reg ph., 5 1 5-846-6378. 

If you have use for it, please send after midnight 
Central Daylight Time to lessen confusion of occupates 
trying to answer a fax call. Thanks, J 
«< Hello J (?) 

Frank Davis has told me of you that you were a Sinclair 



ZXir QLive Alive! 



Winter 1998 



user. Saul and I are presently on a sabatical for a few 
months touring Europe. We are in the process of buying out 
Frank (some of his stock is going to go down to Texas I 
think to John Rish who has done z88 repairs for the last 
several years. 

Til we are back Frank and his wife are doing the 
shipping and such for us. We have a package for the PC/QL 
to Z88. It includes all needed cables, QL software on MDV, 
PC software on plug-in Eprom cartridge and PC disk. We 
are selling them at this time as a combo for $40 Should 
you want one before we get back (sometime between the 
end of Decmber and the middle of February) just go ahead 
and send the order to Frank and he will take care of it. 
Otherwise you could just wait. We felt we needed a long 
vacation after spending 30 years with the State Dept. 
Sincerely, 

Rita Jean Willis 

ritajean@hotmail. com 



How 



Just a short message to those on this list and their interested 

friends For those of you in places other than North 
America (and who feel you can afford the trip or just want 
to make it part of a vacation) as well as those in North 
America — we are looking at having two QL and it's 
derivatives (as well as other Sinclair and Cambridge based 
computers) shows here in the USA next year. One will be 
near San Francisco on the West coast and the other a bit 
inland from the East coast (probably back at Bedford, PA). 
The time period being looked at is in either May or early 
June of 1999. Tim Swenson and Don Walterman (both on 
this list) are looking to be the anchor men out West, and 
unless someone else wants to step up and do it, then my 
wife Carol and I will once again do it on the East coast 
Now what I need are for people to let me know they are 

truly interested and if so, what they would like to see 
repeated or changed about the previous shows If I do not 

hear from enough people... then I shall just drop the 
whole idea and figure you have no interest. This especially 

goes to all the lurkers and people who only on a great 
occasion feel the urge to speak up. As anyone who has ever 
put on a show can tell you there is a lot of work that goes 
into it. We want it to have enough people to make it 
worthwhile for dealers both in North America and 
elsewhere to make the trip. Yep, you guessed it.... that 
means they need for people to not just come and talk, but to 
part with some of their money, that is what fuels further 
development It has to at least pay for itself even for 
hobbyists. None of them are under the illusion they will get 
rich by vending at a QL show.. ..but it at least has to pay for 
itself and all the extra would not hurt 
End of commercial, now back to your regular broadcast. 
Most replies to this can be made directly to me rather than 
the group, unless they are a need to know item for others. 

Thanks!!! 



US® 00EEKJ0Q 

fdavis@iquest.net 
http ://members. tripod. com/-FWDcomputing/ 
Working to make computing fun! 



Hi Abed, 

I have finally published my very primitive TS web 
page. I'm still not ready for general release to the public as 



I can't get the few links I have to work right . 

Anyway, I thought I'd let you take a look and give me 
some feedback. I will continue to improve it, but have been 
very busy with work and family so don't have a lot of time. 
It's at: http://www.outlawnet.com/~jboatno4 
Takej^arc^^ 

J> /3 # b \fi Yesterday J>j3jtbl|/3 

J>/3#bt|.fi Yesterday, J>j9#bt|J9 
All those backups seemed a waste of pay. 
Now my database has gone away 
Oh I believe in yesterday. 
\>\&}>fi\& Suddenly, \>\fi}>fl\fi 
There's not half the files there used to be, 
And there's a milestone 
hanging over me 
The system crashed so suddenly 
I pushed something wrong, 
what it was I couldn't say 
Now all my data's gone away 
and I long for yesterday-ay-ay-ay. 
bfi$\>\fi Yesterday, J>J3#bl|J3 
The need for back-ups seemed so far away . 
I knew my data was all here to stay, 

J>j3fcjj3 Now I believe in yesterday. J>-f3t|«F3 

I have about 4 articles ready to send you. They all deal 
with HiSoft PASCAL programming. In fact, there is 
probably enough to to make a special PASCAL issue of 
ZXir QLive Alive! 

Will you have any problems decoding Unix-to-Unix 
Encoded Word Perfect 5.1 (DOS) files? I believe I asked 
you this before but I seem to have lost your reply. Also, are 
you familiar with what a PASCAL source code listing 
should look like? I am sure you do but I am asking because 
I once submitted a source code listing to a newsletter as a 
WP 5.1 file only to have it botched up because the editor 
used a proportional font to print out the file which ruined all 
the indentation in the source code listing 

If you get back to me, I could probably send you some 
files tonight. 

David Solly 

/ can decode almost any TEXT format. 
Articles are welcomed, an ytime HI Thank you. 



Dear Abed, 

I am sending you a check for $20 towards my next 
year's membership subscription to help keep ZXir QLive 
Alive! and well I really enjoy being kept up to date on 
what is going on in the Sinclair world. 

I have a problem that you may be able to help me 
solve. I am just about 82 years old and find that I have 
accumulated a whole lot of Sinclair computers, an original 
Mcintosh that is a Mac Plus, and even an old TRS-3 with 
two 80 track DSDD drives. I have a ZX-81 with a full 
keyboard, program tapes, 64K memory, two Westridge 
2050 modems with Smart Terminal 1 . I also have a Timex 
1000 plus many folders of documentation for these 
computers. 

I have a TS-2068 with AERCO 40 track DSDD floppy 
drives plus the CPM program with 80 character lines and 
documentation plus LKDOS plug-in V3 for FD-68 disks. I 
also have an interesting adapter for the 2068 that lets you 
write out phonetic words and sentences in English and it 



ZXir QLive Alive! 



Winter 1998 



will actually read what is written and speak it back on the 
adapter's loud speaker. This program uses the three voices 
of the 2068 built-in sound chip to accomplish this amazing 

feat. 

I have an extra QL computer that I find as surplus and 
not needed anymore. 

What would I do with this equipment to put into 
someone's hand who will want it? I am not thinking of 

selling it but maybe I could give if away id 
someone who would use « for a good purpose. 

I will keep my QL with its GoldCard, Minerva ROM, 
Hermes 220, two 5 % 80 track DSDD floppies, two 3 V 2 ED 
floppies, and a Qbide hard disk setup and a Seikosha serial 
printer. I will keep my Z88 with its Epson serial printer as I 
find it very portable and it works with my Mac as well as 
the QL. For the moment, I will keep the Mac because of 
the info currently stored on its hard drive and the several 
programs and fonts available that are not on the QL. 
As you can see, I really have to peel down and dispose of 
some of this computer equipment before I get too senile to 
use any of it. I find That I haven't used the ZX-81's and 
TS-2068 at all now that I have the QL setup. 

A second problem that you may able to Il6lP fflC 

solve is (o find a working copy of Assembler 
WorKBencb v 1.5 by Talent Computer in England i 

wrote to them but they must be out of business since they 
never answered my letter. Their program came on a micro 
cassette to act as a key so that the program will boot 
properly, My original tape and its copies all failed by the 
tape getting stuck in the cassette case so it won't play at all. 
I have all the programs properly copied on my disks but the 
necessary keyed tape is missing. Do you have any 
suggestions of where to look for a good working copy of 
Assembler WrokBench? 

Please keep up your good work for us Sinclair users as 
this is one set of computers that I can program and 
understand without a lot of new learning required. The 
programs I use are simple and I do not need fancy Windows 
98 etc. to do the simple tasks I need to accomplish. 
Sincerely, John Pegram 

1126StradellaRd. 
Los Angles, CA 90077 

310 472-2467 

Dear Abed, 

.... I did buy many items from Jack. Thank you for the 
information. 

I have plenty of other computers an IBM compatible 

and some Commodore ones, .but now I am concentrating 
on the Timex computers, because there may be little or no 
electricity available on and after Jan. 1, 2000. 

Last year I bought an inverter for my car that puts out 
250 watts of continuous AC power, enough to run a Timex 
1000 computer, Timex 2040 printer, and a small black and 
white television set. By using a <long> extension cord 
computing is possible from inside the house. 
Your friend, 

Jerry Anson 

j erry a@aztec2 . asu. edu 

Hello Abed, 

He got the Larken fixed (had to replace 5 chips), but 
had a note saying the SCLD chip was out on the 2068 and 

ZXir QLive Alive! 



he couldn't fix it. I have another 2068 so that's not a huge 
problem. I haven't had time to set it up and may not until 
after the holidays are over. I'm taking 2 weeks off starting 
the 19th, so maybe 

I'll still get it set up before the New Year. 
Take care and Happy Holidays, 

Jack Boatwright 



Dear Sinclair Users 

This letter is to announce the West Coast Sinclair Show, 
tentatively scheduled for 5 June in Union City, CA. Before 
going too far into organizing the Show we are looking into 

how many local Sinclair users would be interested in 
attending the Show Based on this survey, we can either 
press forward with the show or cancel it due to lack of 

attendance 

Place Union City. CA ( 15 miles south of Oakland & 15 
miles north of San Jose} 
Date: 5 June 1999 
Time: roughly 10:00 am to 5:00 PM (subject to change) 
Cost: approx. $5 - $8 (depending on cost of show location) 
Motel of Choice: South Hayward Motel 6 (510) 489-8333 
The Show will have something of interest for all Sinclair 
users (ZX-81, T/S 1000 T/S 2068 QL, and Z88). We plan 
to have a number of dealers from Europe, primarily Jochen 
Merz Software and TF Services (Tony Firshman). There is 

a lot of new development in the QL world, including a 
whole new QL/QDOS based system called the Q40, and the 
Milan, an Atari-based system that will run SMSQ, a QDOS 

based operating systems. 
For the Z88 there is a new newsletter coming out of Ireland 
and a bunch of newly available applications. It appears that 
FWD Computing (Frank Davis) has dropped support for the 
QL and Z88 so we are looking to find out who will pick up 
his service For the T/S-2068 and T/S- 1000 fan we plan to 
have some information about MS-DOS based emulators for 
both computers, including the new Xtenderll. 
We still do our best to make the show interesting for all 
Sinclair users In addition to vendors and information, there 

is always the enjoyment of meeting others that share the 
same computing interest. Many of us compute by ourselves 

and rarely get a chance to talk to another Sinclair user. 
After attending a number of US QL shows, we know that 

the camaraderie is the best part of the show . 
For the very local or those staying in a Motel, on the night 
before the show there will be an informal Bar-B-Q held at 
Tim Swenson's house, just 1 .5 miles from the Motel 6. 
What we are asking of you, is to let us know if you are 
interested is coming to the Show. The existence of the show 
depends on getting enough attendees to make it worth the 
trip for the European vendors. This is not a commercial 
show It is a show put on by a Sinclair user for other 
Sinclair users. Please contact Tim Swenson via phone 
Mail, or e-mail if you are interested in attending or have 
any questions. If you are no longer a Sinclair user and do 
not want to be contacted farther, please let Tim know and 
he will let other mailing lists owners know 

We hope to see you there, 
The West Coast Sinclair Show Organizers: 
Don Walterman 
& Tim Swenson 
2455 Medallion Dr. 
Union Cit. CA 94587 
(510)489-8944 swensont@ja ck. sns.com 

Winter 1998 




Albrecht, Alvin aralbrec@concentric.net 



Anderson, Paul p.aderson@cwix.com 

Anson, Gerald j erry a@aztec . asu. edu 

Barker Robin Robin@di-ren.demon.co.uk 

Bennett, Dave dbennett 1 Q@desupernet . net 

Boatwright, Jack jboatno4@outlawnet. com 

Boehm, Al boehm@ziplink.net 

Boehm, Bill boehm@plh.af.mil 

C. A. T. S. mf0002@epfl2.epflbalto.org 

Cable, Bill bcable@triton. coat, com 

Chambers, George gfchamb@pathcom.com 

Collins, Bill bcollins@home. ifx. net 

Cottrell, Les jacottre@gte.net 

Cruz-Figueroa, Jaime cruzfiguer@aol.com 

Dansby, Andrew adansby@atlantic.net 

Davis, Frank fdavis@iquest.net 

England, William wengland@iname.com 

Feng, Al alfeng@juno. com 

Fink, Mike domino.cubes@excelsior.net 

Florit, Louis florit@wormhole.unixville. com 

Franke, John j . m. franke@larc . nasa. gov 

Ganger, Gary gangerg@dma. org 

Gillespie, Doug aa43 l@cleveland.freenet.edu 

Girnius, William girnius w@bls.gov 

Harbit, Ken krh03 @csufresno. edu 

Henderlight, Mike mikehend@microsoft. com 

Henn, Fred oranur@juno.com 

Hunkins, James jdhunki@ibm.net 

Impellizerri, John j impellizerri@compuserve. com 

Jaap, Matthias Matthias Jaap@hhs.hh.schu l e.de 

Jonas, Mike mjonas@bbn. com 

Jones, Terry tjones@mame. com 

Kaczor, Jon 75363. 1 127@compuserve.com 

Kahale, Abed akahale@compuserve. com 

Kealy, Harriet Joan hjkealy@admin.hilconet.com 

Kingsley, Ed elk4@aol.com 

Konig, Urs urs.koenig@agrodata. ch 

KurtK7 kurtk7@aol.com 

Kwitkowski, Phillip kwit47@aoi.com 

Lancaster, Garry dharkhig@delphi. com 

Lassov, David emanon@azstarnet.com 

Lebowitz, Dave dkl@dpliv.com 

Lessenberry, Gary glessenb@usr. com 

Liebert-Adelt, Peter p.liebert@t-onIine.de 

Malloy, Bob 74776. 1 161@compuserve.com 

McKelvey, William mckelveyw@delphi.com 

Merz, Jochen jochenmerz@j -m-s.com 

Miller, Seymour seymil@delphi.com 

Muth, Bob bobkeeper 1 @aol. com 

Norton, Gary gnorton@world. std. com 

Parrish, Gil 107765. 1 161@compuserve.com 

Pashtoon, Nazir nazir.pashtoon@ingram micro . com 

Payne, Josh joshpayne@bigfoot. com 

Pazmino, John john.pazmino@moondog.com 



Simon, Thomas 73 1 77 . 3 3 3 @compuserve. com 



oKapinsKi, 10m 


tsicapins(uy uno . com 


Smith, Denms 


uenny . smitn(tzy uno . com 


oOiiy, JJaviu 


ac j j 3(u^rreenet . caneion. ca 


otegman, uan 


aansteg(oy uno . com 


owenson, nm 


swensonic(ti}geociiies. com 


Swenson, Tim 


swensont(titsirciive. csu. sgi. com 


owentKo, waiiy 


wswentKO(o£ maroon, tc . umn. euu 


owoger, K-Ooen 


ceng 1 u 0 (axeman . mox . com 


1 ayior, Jen 


j etayior(ojspar . ca 


Thoresen, Jeff 


74200.257@compuserve.com 


Walterman, Don 


walterm@ix. netcom. com 


Washington, Barry 


mf0002@epfl2.epflbalto.org 



BUG in SOL BBS 



Weil, I found one, and there may be others, as you can see : 
After Larry Kenny called the BBS, we decided to 
receive remote messages with the use of the instruction 
INPUT#7;A$, since it is implemented at the (fast) system 
level, rather than in Larry's (slower) BASIC code. 

Yeah, but INPUT A$ cannot accept quotation marks 
in A$ 

So, this is a request for any additional characters besides 
", the quotation mark, which causes the INPUT A$ 
instruction to blow up ! 

KEEP ON TIMEX'n 

David E. Lassov: Sysop, 
SOL BBS @ 520-882-0388 (data ) 520-882-3972 (voice) 
emanon@azstarnet.com (email) 
2590 N. Jordan DR 
Tucson AZ 85745-1132 

Abed, " 

First, thanks for the cartoons, they help to brighten a 
busy and overworked day. For a few weeks now, with the 
Xmas season upon us we have been getting between 2-300 
Amiga software orders a day, so are quite busy. 

I had meant to do up an ad for the next issue but 

seem to have run out of time. 
All of my Z88 and QL stuff is sold. What I 
do have left is T-shirts for QL, TSNIJG 
and Z88. I also have mouse mats for 
them. I also still have my Speccy97, Retro 
Gold and Speccy Classix CDs and amiga 

Forever CDs that were in my last ad. 
Prices are the same and what is not sold by 
the end of January goes to Brazil. Anyone 
who wants any of this had best do so soon. 

Thanks, Frank 

FWD Computing 

PO Box 17 



Perry, Russ Jr 



slapdash@enteract. com 



Rigter, Wilf 



rigter@cafe.net 



Rish John 



7460 1.153 5@compuserve.com 



Shepard, Jay 



j shepard@netins. net 



Mexico IN 46958 USA 

fdavis@iquest. net 
ht1p://members.tripod.com/~FWDcomputing/ 

Working to make computing fun! 



ZXir QLive Alive! 



8 



Winter 1998 



FROM THE CHAIRMAN'S DISK 



new aa 

H 



■ wrote to Tim Swenson to ask about the 2050 serial port 
to Z88 and he gave me what he thought was the proper 
way to interface it. But it leaves a little to experiment 
with. However I leaned that Tim now has a house and a 
newaddress. (see Unclassified Ads section) 

ad a call from Fred Stern and he reported that Bob 
Gilder died on or about the first day of November. A 
neighbor had noticed him sitting at the kitchen table 
in the evening and he was still there and looked like he 
wasn't moving the next morning so he called the police. 
They broke in and found him dead. Bob was one of the 
dedicated members of LIST. 

Wrote Jack Boatwright in regards to my having to 
dispose of my newsletters and TS 2068 computer 
i • — ■„ - • 



equipment and I 
haven't heard from him. I 
had offered to send it 
shipping free so I guess 
the offer still goes. 

While I have disk 
drives that will 
work on the TS- 
2068 and Oliger or 
LarKen disk interfaces I 
won't ship them without 
postage reimbursement 
since they are really 
heavy. The drives would 
include several drive cases 
with power supplies. I will 
need to know in December 
since I will have to start 
cleaning them out soon. 

Amove is contem- 
plated from here in 
Auburn during the 
year of 1999 and at the 
moment where to is not 
sure. I have been given the 
ultimatum of not moving 
boxes and boxes of com- 
puter JUNK! The JUNK! 
is my wife's words not 
mine. Later I will work 
with an MSDOS clone of 
some kind and will very 
likely have the ZX-81 and 
TS-2068 emulators as well as the SPECTRUM. And I will 
still have the Z88 so I will still be in the TS community. 
I saw Frank Davis last Saturday at the Ft. Wayne Ham and 
Computer Fest. Since Frank is mainly into Amiga he is 
doing great in that field. Still has some Z88 and that sort of 
stuff to sell. 

)een having a lot of household troubles. Not with my 
| wife but the house. First we put in a new dishwasher 
and when the disposal was disconnected from the old 
dishwasher the connector on the disposal for the dishwasher 
discharge hose was broke off to the point where it barely 




SlUU It 

It 



ZXir QLive Alive! 



could be clamped to. So I replaced that. All I can say they 
sure have made it easier to replace with a different type of 
assembly. I have put in three prior disposals and all of those 
had to be hold up while you tried to connect them up to the 
sink. Now you connect a subassembly to the sink and then 
you rotate the disposal into place which makes it very easy. 
And the first time I did not have to redo the plumbing to get 
it to fit. I was amazed at how easy it was 
FBl he nigilt °f November tenth a portion of our privacy 
H fence was blown down by the storm. What actually 
■ happened was that two posts had rotted and broken 
off at ground level.. And our homeowner's insurance has a 
hundred dollar deductible. And so to save the hundred dol- 
lars I dissembled the fallen fence and borrowed a clamshell 

| post hole digger and dug 
| two holes next to the ce- 
n mented in old posts and 
set in place two new post 
| of pressure treated 4 X 
4's. The lumber and the 
two bags of readymix 
was delivered Monday. I 
finished the fence yester- 
day (November 18th). 
Sunday (November 15th) 
our garage door opener 
quit raising the garage 
door The helical gear 
that the worm gear that is 
on the motor shaft turns 
apparently has stripped 
all the teeth off. So Tues- 
day we went to Sears to 
see if they had an opener 
that was similar to the 
one that died. There are 
some differences could 
have probably used the 
same track and chain but 
I didn't want that to go 
bad and have to redo the 
installation. I started that 
this morning and right 
now I am installing the 
light beam and sensor 
which is a feature that is 
mandatory for garage 
doors now. Supposed to prevent injury to a child or dog or 
even a person. In the morning I will finish the installation 
and then do the set up for proper closing and for the safety 
features. Right now I open and close the door manually and 
lock it by Clamping a C clamp on the track. I lucked out 
since they had these units on a special purchase and sale 
plus a coupon discount. The old unit was in use 16 years 
The life of a garage door opening is from 15 to 20 years. 

Booking at the electronics of the garage door controller 
il see that it could be easily converted to turn on 
^something. It would make an interesting project. 



Winter 1998 



S2 



Back to uploading and down loading programs from the 
Z88 to the TS-2068: I remember seeing an article about 
how to use a modem to modem with out Ma Bell being 
between. I will find that and get the 2050 modem and the 
Z88 modem going - 1 hope. 

I have been looking at the PC's and have started to figure 
bout when some of the salespeople are spoofing me. I was 
originally wanting to use a ZIP drive BUT! I was lead to 
understand that would be better off with a CD ROM burner. 



The disks are about a fifth the cost and there is a lot more 
capacity on the CD. 

With all our trouble with our house I guess we are 
lucky since we don't have hurricane or flooding 
damage. I have seen the destruction in Germany 
during W WII and in Korea during the war in 1950 and 
1951. If you don't have too much and you loose that 
This is it till next time. 0/0 



Rising TO9P_QCQ(Eq^ 



by AL Feng 



Over a year ago, I read a request asking how to use 
the FOP_OVER facility found in TK2_EXTensions 
instead of OPEN_NEW. 
Others are better qualified to explain some of this. Let me 
simply state that you need to OPEN a device before you can 
access it; and, when you are done using it, you should 
CLOSE it. 

f~7 Tsing FOP_OVER lets you set an error trap for a 
Vf I "bad" medium - where "bad" can mean any of a 
^■''variety of problems such as a missing physical 
medium. If the error is recognized, instead of having the 
program crash, recovery can be to another location in the 
program. 

f *v he following examples are actual PROCedures used 
O Jin both QLAMBer (FOP_OVER) and QLATter 
(OPENJNEW). I hope this is still useful 
information, and my apologies for its tardiness . 
HERE'S HOW 

C omparing and contrasting should be the easiest way 
to see how comparable tasks are implemented; so, 
this is more show then tell. 
To begin with the obvious, here is the PROCedure used in 
QLATter 

650 DEFine PROCedure Access: DIM Z$(610,32): 
DELETE t$&a&F$ 
660 OPEN NEW#6,t$&a&F$ 
670 DIR#6,t$a&" "&RN$: CLOSE#6 
680 OPEN_IN#7,t$&a&F$: FOR c=0 TO 610 
690 IF EOF{#7) THEN EXIT c 

700 INPUT#7,Z$(c): END FOR c: CLOSE#7: c=c-l : END 
IF : END DEFine 

You should be able to see that the PROC- 



edure using FOP OVER is very similar. 
650 DEFine PROCedure Access: DIM Z$(610,32): 
DELETE t$&a&F$ 
660 uk=FOP_OVER(#6,t$&a&F$): 

IF uk<0 THEN iX: CLSd: AT#2,24,37: REPORT#2,uk: 

PAUSE 50: zCLS: tre=0: WCh 
670 DIR#6,t$&a&"_"&RN$: CLOSE#6 
680 OPEN_IN#7,t$&a&F$: FOR c=0 TO 610 
690 IF EOF(#7) THEN EXIT c 

700 lNPUT#7,Z$(c): END FORc: CLOSE#7: c=c-l: END 
IF : 

END DEFine 

Z$(q,l) is a DBVIensioned array where 'q' is the number of 
entries (in this case 610, two of which are related to the 
medium header) and T (the filename length is 32 
characters long in this instance). 
1 use variables, but you don't have to: 

t$ = "flp" 

a= 1 

F$ = "JFLIST_imp" 

RN$ = (this is optional; and, can be omitted) 
nnn DEFine PROCedure ix: PRINT "invalid 

device":END DEFine 

nnn DEFine PROCedure zCLS: (clears part of the 

screen) 

nnn DEFine PROCedure WCh: (this is where I want the 
program re-directed; 'tre' is a pointer). 

I hope these two examples and limited explanation are 
adequate. 

If you have any questions, feel free to contact me . 
( Happ-£ eJrails, 



Apd Qomf utina, "¥ou . 

1 il 

r\ LiLr^TL} of [_<2rr\en Procedures- an unctions- in {— ftSoft T 

PASCAL for Seq uenticJ -{— -ile J— UnJIing 
Written by Larry Kenny Edited by David Solly 



"his Hi Soft PASCAL source code provides the 
procedures and functions required for reading and 
writing sequential files to a LarKen DOS formatted 
diskette. 

Program LkDOSLib; 

A Library of LkDOS File Procedures and Functions 
OpenFile- Open For Sequential Read 
RdChar - Read 1 Char From File 
Eof- True If Last Char Has Been Read 
CloseFile - Closes Buffer, Frees DOS Commands 



GoToDrive - Select Drive 0 or 1 
Catalog - Simple Cat List 

istory: 

Written by Larry Kenny 
Navan, Ontario, Canada, 1989 
VAR C : CHAR; 
A : INTEGER; 
FLAG : BOOLEAN; 
FUNCTION Eof : BOOLEAN; 
BEGIN 



ZXir QLive Alive! 



10 



Winter 1998 



INLINE (#CD, #62, #00, #3A, #0F, #20, #FE, #40, 

#28,#04,#3E,#FF,#18,#01,#AF,#DD,#77,#02, 
#CD, #BA, #00) ; 

END; 

PROCEDURE Catalog;" 
BEGIN 

INLINE (#F3, #CD, #62, #00, #AF, #32, #1D, #20 
, #CD, #7E, #00, #CD, #7B, #00, #21, #88 
, #20, #3E, #0D, #D7, #06, #03, #23, #7E 
, #FE, #FA, #28, #20, #FE, #FF, #20, #F6 
, #23, #7E, #FE, #FE, #28, #F0, #7E, #FE 
,#FD,#28,#06,#E5,#D7,#E1,#23,#18 
, #F5, #05, #28, #DD, #3E, #20, #D7, #3E 
, #2 0 , #D7 , # 1 8 , #DA, #CD, #BA, # 0 0 , # 0 0 ) ; 
WRITELN; 
ENDj 

PROCEDURE Go T o Dr i ve ( DV : INTE GE~R ) ~; 

BEGIN 

IF (DV=0) OR (DV=1) THEN 
BEGIN 

DV:=(DV+1) *2; 

POKE (23728, CHR(DV) ) ; 

INLINE (#CD, #62, #00, #3A, #B0, #5C, 

#32, #03, #20, #CD, #BA, #00) ; 

END 

ELSE WRITELN ( ^NON-EX IS TANT DRIVE'); 
_ END; 

PROCE DURE OpenFi Te"; 
BEGIN 

WRITE RENTER FILE TO OPEN ») ; 
READLN; 

INLINE (#CD, #62, #00, #21, #0F, #77, #11, #22, 
#20,#06,#0A / #7E,#FE,#20,#30,#02, 
#3E, #20, #12, #23, #13, #10, #F4, #3E, 



#00, #32, #B0, #5C, #CD, #84, #00, #3A, 
#20,#20,#FE,#0A, #28,#2B,#CD,#87, 
#00,#21,#44,#20,#22,#2C,#20,#2A, 
#2C, #20, #23, #22, #2C, #20, #7E, #FE, 
#F9, #28, #19, #32, #1D, #20, #CD, #7E, 
#00,#CD,#7B,#00,#21,#88,#20,#22, 
#7C,#20,#3E,#40,#32,#OF,#20,#18, 
#03, #32, #B0, #5C, #CD, #BA, #00, #00) ; 

IF PEEK (2372 8, CHAR) =CHR (10) THEN 

WRITELN ( *FILE NOT FOUND' ) ; 

_ END i 

PROCEDURE RdChar (VAR~ 'chTcHAR)";" 
BEGIN 

INLINE (#16, #05, #CD, #6A, #00, #DD, #6E, #02, 
#DD,#66,#03,#77) ; 
END ; _ 

PROCEDURE "cioseFile; 
BEGIN 

INLINE (#CD, #62, #00, #AF, #32, #0F, #20, #CD, # 
BA, #00) ; 
END; _ 

BEGIN {Mainline program and 
Demonstration } 
GoToDrive (0) ; 
Catalog; 
OpenFi le; 
REPEAT 
BEGIN 
RdChar (C) ; 
WRITE (C) ; 
END; 

UNTIL Eof; 
CioseFile; 
END. 



DataStore() and DataFetch() 

Two LarKen DOS Procedures For HiSoft™ PASCAL By David soiiy 



When you have become spoiled by having a disk drive 
system on your Timex/Sinclair 2068, such as I have, 
you soon begin to wonder what use is there in having 
a compiler which allows you to write programs which are 
easy to maintain and run like wildfire when compiled but 
grind snail's pace when they have to access the cassette 
drive to store or fetch data. 1 This has been the problem 
with HiSoft PASCAL, Version 4 compiler for the 
Timex/Sinclair 2068, (henceforth: PASCAL); however, 
with the new procedures DataStoreQ and DataFetchQ 
variable data can be stored to and fetched from disk under 
LarKen DOS. 

How The Procedures Work 

W 11 versions of PASCAL use a stack in one form or 

n another to keep track of parameter passing amongst 
procedures and functions. HiSoft PASCAL uses the LX 
register to perform this function. In the case of 
DataStoreQ and DataFetchQ, thirteen bytes, starting from 
LX+2, become reserved in the IX register when the 
procedure is called. Depending upon whether it is the 
DataStoreQ or DataFetchQ procedure that is being called, 
the first two bytes contain the number of bytes which are to 
be transferred to or from the disk. This number is usually 
ZXirQLive Alive! ~~ 11 



passed to the procedure through the function SIZEQ. 2 The 
next two bytes contain the start address of the segment to be 
transferred to disk or to where it is to be placed in RAM. 
This address is usually supplied through the function 
ADDRQ The remaining nine bytes contain the name under 
which the data will be stored to, or, fetched from the disk. 
In the demonstration program the variables Name and 
FileName have been created of the user defined type 
iostring to pass the file name from where it is read from the 
keyboard to the procedures Once the required information 
has been passed to the procedure being called, the INLINE 
routine in turn transfers the information to certain memory 
locations in the LarKen DOS cartridge and invokes the 
proper routines within LarKen DOS to store or fetch the 
data. 

Demo Program 3 

The demonstration program creates a small telephone 
directory in which you can store ten names and ten 
numbers. The program will ask you to enter ten names 
and numbers to fill the directory. Next it will ask for a 
name under which to store all the data which you have 
entered into the variable Directory to the disk. Finally it 
will ask for the file name of the data to retrieve from the 



Winter 1998 



disk. When you first run the program you will have to 
reuse the name you just used to store the data or the 
program may crash If you run the program several times 
and create a number of files on the disk under different 
names you can then use any of these names and the data 
stored under the name selected will be retrieved and 
displayed. 

Program LISTing 
TelephoneDirectory 
Purpose 

This program creates a small telephone directory to 
demonstrate how data can be write and read to disk under 
LarKen DOS using the procedures 

DataStoreO and DataFetchQ and also to 

demonstrate how a type may be developed to 

emulate the type String which is found in 

other versions of PASCAL. 

History 

Based upon an example in the Hi Soft PASCAL manual 

String emulation by David Solly. 

LarKen DOS I/O features by David Solly and Larry Kenny. 

Ottawa, Ontario, Canada, 

25 March 1990. Revised: 4 November 1998. 

CONST 

MaxLen = 32, { Maximum length for the "string" } 
MaxEnt = 10; { Maximum number of entries in 
the telephone directory } 

TYPE 

{ An array type for holding file names } 
FileNameType = ARRAY[1. .9] OF CHAR, 
{ A special type to emulate a "string" } 
StringType = RECORD 

CharStr : ARRAY [1. MaxLen] OF CHAR; 

Len : INTEGER 
END; 

{ A base type for each entry in the directory } 
EntryType = RECORD 

Name : StringType; 

Number : StringType; 

END; 

VAR 

Directory : ARRAY [1. MaxEnt] OF EntryType; 

I : INTEGER; 

Ans : CHAR; 

FileName : FileNameType; 
PROCEDURE StrRead (VAR EntryData : StringType); 
{ A procedure to read each character that is 

entered while keeping track of the number of 

keystrokes as the information is placed into 

the array } 
BEGIN 

EntryDataLen := 0; 

{ Required in HiSoft PASCAL, 
see the manual } 

IF EOLN THEN READLN; 

WHILE NOT EOLN DO 
BEGIN 

EntryDataLen := EntryData.Len + 1; 
READ(EntryData.CharStr[EntryData.Len]) 
END; 

READLN; { Required after READ } 



END; 

PROCEDURE StrWrite(VARPrintData : StringType); 
{ A procedure to write out the information 

contained in each string } 
VAR 

Letter : INTEGER; 
BEGIN 

FOR Letter := 1 TO PrintData.Len DO 
WRITE(PrintData . CharStr[Letterj) 
END; 

PROCEDURE ReadData; 

{ A procedure to read names and numbers 

into the telephone directory } 
BEGIN 

PAGE; 

FOR I :=1 TO MaxEnt DO 
BEGIN 
WITH Directory[I] DO 
BEGIN 

WRITEf Enter Name ',1:2,', Please >'); 

StrRead(Name); 

WRITELN; 

WRITE('Enter Number, Please >'); 
StrRead(Number); 
END; 
END, 
END; 

PROCEDURE PrintData; 
{ Reads the information contained in the 
telephon directory } 
BEGIN 

FORI := 1 TO MaxEnt DO 
BEGIN 

WITH Directory[I] DO 
BEGIN 

StrWrite(Name); 
WRITE(' '); 
StrWrite(Number); 
WRITELN 
END 
END 
END; 

PROCEDURE DataStore (Name : FileNameType; 
Start, Bytes : INTEGER); 

Purpose: 

Writes data to the disk 
History: 

Concept and research by David Soliy. 
Machine code by Larry Kenny 
BEGIN 
INLINE ( 

#F3, #CD, #62, #00, #3E, #0B, #32, #02, 
#20, #DD, #E5, #21, #22, #20, #06, #09, 
#DD, #7E, #06, #FE, #00, #20, #02, #3E, 
#20, #77, #23, #DD, #23, #10, #F1, #DD, 
• #E1, #CD, #CC, #00, #DD, #6E, #04, #DD, 
#66, #05, #22, #33, #20, #DD, #6E, #02, 
#DD, #66, #03, #22, #31, #20, #CD, #CF, 
#00, #3A, #64, #00, #FB 

); 

END; 

PROCEDURE DataFetch (Name : FileNameType; 



ZXir QLive Alive! 



12 



Winter 1998 



Start, Bytes : INTEGER); 

Purpose: 

Reads a file from the disk drive. 
History: 

Concept and research by David Solly. 
Machine code by Larry Kenny. 
BEGIN 
INLINE( 

#F3, #CD, #62, #00, #3E, #64, #32, #B0 
#5C, #3E, #0B, #32, #02, #20, #DD, #E5 
#21, #22, #20, #06, #09, #DD, #7E, #06 ' 
#FE, #00, #20, #02, #3E, #20, #77, #23 ' 
#DD, #23, #10, #F1, #DD, #E1, #CD, #C6, 
#00, #3 A, #B0, #5C, #FE, #65, #28, #15 
#DD, #6E, #04, #DD, #66, #05, #22, #33 
#20, #DD, #6E, #02, #DD, #66, #03, #22, 
#31, #20, #CD, #C9, #00, #3 A, #64, #00, 
#FB 

); 

END, 



aim Pfogyam 

BEGIN 
PAGE; 

WRITELN('The object of this program is to demonstrate'); 
WRITELN('how type may be developed to emulate the'); ' 
WRITELN('type String which is found in other versions'); 
WRITELNCof PASCAL and also to demonstrate how 
data'); 

WRITELNC stored within records and arrays may be'); 
WRITELN('transferred to and from the LARKEN Disk'); 
WRITELNC system using the procedures "DataStore()" 
and'); 

WRITELN('"DataFetch()". '); 

WRITELN, 

WRITELN; 

WRITELN('Hit any key when ready ')• 

READLN; 

READ(Ans); 

ReadData; 

PAGE; 



WRITELN('Now to store the data to disk'); 
WRITELN; 

WRITE('Enter a name for disk storeage >')• 

READLN; 

READ(FileName); 

DataStore(FileName,ADDR(Directory),SIZE(Directory))- 
PAGE; 

WRITE('Data Stored.'); 
WRITELN; 

WRITELN('Now to fetch the data from the disk.'); 
WRITELN; 

WRITELN('Enter a name for disk fetch >')• 

READLN; 

READ(FileName); 

READLN; 

DataFetch(FileName,ADDR(Directory),SIZE(Directory));4 
PAGE; 

PrintData; 

WRITELN; 

WRITELN; 

WRITELN('End of Demonstration') 
END. 

Actually, the version of HiSoft PASCAL that was 
converted for use on the Timex/Sinclair 2068 could 
immediately access the ZX Microdrive which was a high- 
speed - compared to tape! - mass storage device. 
Unfortunately, the ZX Microdrives were relatively hard to 
come by in North America. 

2 The DataStoreO and DataFetch() procedures, like then- 
tape counterparts TIN() and TOUT{), can be used to 
transfer virtually any section of RAM, including the screen 
buffer, on or off the disk by supplying the start and length 
parameters in the locations occupied by ADDRH and 

size(). 

3 Based in part on the HiSoft PASCAL demonstration 
program Tape. 

4 Unlike its tape counterpart TXNQ, DataFetchQ requires 
both the start address and the size of the file in bytes. 




Comparison Between 2068, PASCAL 
and Compiled BASIC (TIMACHINEJ 



by Larry Kenny (Edited by David Solly from Mr. Kenny's 1989 article) 



(have been working on using my Timex/Sinclair 2068 to 
control a 3-axis drilling/routing machine using stepper 
motors. To make the machine move in arcs and circles I 
needed to use the sine and cosine functions in the 
Timex/Sinclair 2068 ROM. After trying some BASIC and 
machine language — using the floating point interpreter — 
routines, I found that the program couldn't run nearly fast 
enough to keep the machine busy at full speed. 

I asked David Solly, who is a long time HiSoft 
PASCAL user, to write me a test program using its 
sine/cosine functions so I could test it against 
Timex/Sinclair 2068 BASIC and compiled BASIC. 
The test program plots around a circle 100 times. 



The results: 



ZXirQLive Alive! 



T/S-2068 BASIC interpreted 150 seconds 
Compiled BASIC (Timachine) 126 seconds 
Hi-Soft PASCAL 18 seconds 

Wow! The PASCAL really flies even when doing 
floating point math. It has all its own math 
routines built in so it doesn't do any ROM calls. 
That also means that the compiled code can be burnt into an 
EPROM and run on a Z80 based CPU without the 
Timex/Sinclair ROM resident. 

The compiled BASIC is only slightly faster that regular 
BASIC when the floating point routines are used. 
Even calling the Timex/Sinclair 2068 floating point 



13 



Winter 1998 



routines from machine code doesn't make much difference. 
If you are writing a program that does a lot of 
calculation such as a spread sheet, 3d graphics, or 
CAD etc., PASCAL will far out perform BASIC. 
Timex/Sinclair 2068 BASIC Circle Listing 

5 REM ! OPEN # (Timachine only) 

10 LET RAD = 50 

20 FOR A=0 TO 628 STEP .5 

30 PLOT 80 + RAD * SIN A , 80 + RAD * COS A 

40 NEXT A 

50 PRINT "END OF PROGRAM " 

HiSoft PASCAL Circle Listing 

PROGRAM CIRCLE; 

PROCEDURE PLOT (ON : BOOLEAN; X, Y : 

INTEGER); 

BEGIN 

IF ON THEN WRITE(CHR(21),CHR(0)) 
ELSE WRITE (CHR(21),CHR(1)); 
INLINE (#FD, #21, #3 A, #5C, 

#DD, #46, 2, #DD, #4E, 4, 



#CD, #E5, #22); 
END; 

PROCEDURE CIRC; 
CONST RAD = 50; 
VAR 

A: REAL; 

ON : BOOLEAN; 
BEGIN 

A:=0; 

ON ;= TRUE; 
REPEAT 

PLOT (ON, ENTIER(80 + RAD * SIN(A)), 
ENTIER(80 + RAD * COS(A))); 

A:= A + 0.5; 
UNTIL A > 628; 
END; 

BEGIN (*MA1N PROGRAM*) 
CIRC; 

WRTTELN ('END OF PROGRAM'), 
END. 




Hacker's Journal 



Supporting Ail QL Programmers 



#29 October 1998 



The QL Hacker's Journal (QHJ) 
is published by Tim Swenson 
as a service to the QL Community. The QHJ is freely 
distributable. Past issues are available on disk, via e-mail, 
or via the Anon-FTP server, garbo.uwasa.fi. The QHJ is 
always on the look out for article submissions. 

QL Hacker's Journal 
c/o Tim Swenson 
2455 Medallion Dr. 
Union City, CA 94587-1914 
swensont@geocities. com swensont@j ack. sns . com 
h11p://www.geociues.conVSilconValley/Pines/5865/index.html 

Editor's Forum 

I'd like to thank Per Witte for providing pretty much the 
core part of this issue. I saw the Filename Parser program 
posted to the QL-users mailing list and thought it would be 
good material for an article. I contacted Per and he was 
willing to write something up. The length of the article was 
more that I expected, but I'm not complaining. 

I'm still pressing forth with the Qlib Source Book. I've 
been delayed by a broken hand (out of cast and getting 
better). I'm pushing myself to get something out soon, 
even if only about 10% of what I would like to see in the 
Book. I'm looking for information about the history of 
Qliberator (the various releases) and any bugs in the current 
release (3.36). If you have some info, please send it to me. 
My other project is the QL PD Documentation Project (I'm 
using PD loosely to mean freely available). I'm trying to 
collect (in one location) a variety of released information 
about the QL and QDOS. Currently I have a number of 
documents, including parts of the QL User Guide, a couple 
of Tutorials, and a few articles that I've scanned in from 
IQLR. Please take a look at my web site to see what I've 
gathered. It is: 

www. geocities. com/SiliconValley/Pines/5 865/ 



Shelling Out To SuperBASIC 

The QL is unique in how QDOS and SuperBASIC are sort 
of rolled into one Just as we can only have one copy of 
QDOS running, we can only have one copy of SuperBASIC 
running (OK, I know this is not true for Minerva). 
In a traditional operating system model, there is the OS and 
the Shell. The Shell is a user interface to the operating 
system. In UNIX there are many different shells; Boune 
(sh), C (csh), Korn (ksh), etc.. In MS-DOS the shell was in 
COMMAND.COM. Even with Win95, there is a MS-DOS 
Shell still available. 

In most OS's, there can usually be more than one shell 
running at one time. Application programs can fire off 
another Shell and run one or more commands. The new 
shell becomes a child process of the calling application. 
All of this comes about because the shell is nothing more 
than another user application On the QL we are limited in 
that only one copy of SuperBASIC can be run at one time at 
it must be Job 0. 

In QDOS, user applications can call other programs. An 
editor could call C68 to compile a program that was just 
edited and saved. But when the command needed to run is 
a built-in SuperBASIC command (which includes 
LOADable extensions), there is no way to shell out to 
SuperBASIC to run the command. 

Iran into this problem when I wanted to ran Qliberator 
from within MicroEmacs. MicroEmacs allows for 
executing programs from MicroEmacs, but I could not 
ran all the command for QLiberator that I needed. To 
explain, here are the steps to run QLiberator: 

1 . Load the program into SuperBASIC 

2. Call "Liberate" to create a working file. 

3. Execute Qlib 

Here is a the steps in SuperBASIC terms: 
LOAD FLP1 TEST BAS 



ZXir QLive Alive! 



14 



Winter 1998 



LIBERATE FLP1 TEST BAS 
EXEC QLIB 

Since I can't call LOAD or LIBERATE from within 
MicroEmacs, I thought 1 could write a SuperBASIC 
program and then compile it. This may work with 
LIBERATE, but LOAD is not a command that QLib will 
compile. 

I thought I was stuck until 1 started reading the HotKey 
System E manual. It was there that I ran across the two 
commands, HOTCMD and HOTDO. 

HOTCMD assigns to an ALT key, a command that 
will be entered in the SuperBASIC window (#0). It 
does not have to be an executable program, but can 
be a SuperBASIC statement or a resident command ( like 
TKII or DIYtoolkit). HOT CMD "picks" the SuperBASIC 
interpreter to the top and the command is sent to 
SuperBASIC to be run. 

The HotKey System II was designed to be driven by the 
user. It is the user typing in a HotKey sequence that puts the 
System into motion. There in a HotKey command that 
allows automation of the HotKey System: HOT DO. 
HOT DO tells the System to implement a HotKey. 
HOT DO('a') is the same as the user hitting the ALT-a 
keys. 

Using HOTCMD and HOTDO in conjunction, the 
programmer can perform actions just as if they were 
"shelling" out to SuperBASIC. In the case stated 
above, here is how I would use the two commands to 
automate using Qliberator: 
10file$ = M fl P l_test_bas H 
20 ERT HOT CMDCa', 'LOAD ffle$') 
30 HOTDO('a') 

40 ERT HOT CMD('b ! , 'LIBERATE file$') 
50HOTDO('b') 

60 EXEC QLIB _ OBJ REMark Just EXEC it. 
I can get away with having LIBERATE in a compiled QLib 
program, but not LOAD. Here is a way to get around this 

limitation. 

Parameter Passing Techniques In S* BASIC 

Per Witte 

In QHJ#24 and #25 there were articles on parameter 
passing techniques (By Tim Swenson and by Peter 
Tiliier, respectively). I won't (too much) re-hash what's 
already been said (this article was prepared before I was 
aware of the other two), but look at the matter in a 
practical way, that may suit some readers. 

I'm using SBASIC for this article - the enhanced 
SuperBASIC interpreter that comes with SMSQ and 
SMSQ/E. SBASIC behaves somewhat differently to 
SuperBASIC with respect to variable handling, and has 
some desirable features, not available in standard 
SuperBASIC. Where this affects the subject at hand I shall 
try and point out the differences. However, I am 
presently not able to test my examples in SuperBASIC 
so some incompatibilities (i.e., bugs) may be found. Please 
always ensure that the techniques described work with 
your version of S*BASIC before relying on them in any 
way. 

«< Value or Reference? »> 

There are two ways of passing parameters to functions 
and procedures in S*BASIC: by value, which is perhaps 
the "intuitive" m ethod; and by reference, which will be the 
ZXir QLive Alive! 15 



main focus of this article. 

Passing parameters by value is (what we may THINK) 
we normally do. RUNning the program fragment below 
10 test 11,2,3 

99 : 

100 defproc testl(a,b,c) 
110 print a,b,c 
120 enddef 
130; 

would print "1 2 3" on your screen (with any luck!). And of 
course: 

1 0 x=l :y=2:z=3 ;. rem Assign values to some variables 
20 testl x,y,z: rem and use these instead, 
does the same . But a small modification of test, test2, 

shows what's really going on: 

99 . 

100 defproc test2(a,b,c) 
110 print a,b,c 

120 a=a+a:b=b+b:c=c+c:rem Double all parameter 
variables! 
130 enddef 

140 : 

The new harness: 
10x=l:y=2:z=3 
20 test2 x,y,z 
30 print x,y,z 

12 3 <- prints out x, y, & z, as expected 
2 4 6 <- but what's going on here? We set x,y,z to be 
1,2,3! 

By altering the values of the parameter variables a, b, & c, 
we cause a change to the calling variables x, y, & z too.' 
This is a call by reference; we don't pass to the procedure 
merely the values the variables contain, instead we refer to 
the original variables - a, b & c ARE x, y, z, only by a 
different name. As you will appreciate passing parameters 
by reference is not always desirable. In fact, unless you 
specifically want to do so, it could be a real pain: You can 
see how a procedure might easily (and unintended by 
you) alter its parameters, and thereby variables external 
to itself. To avoid this you can apply the rule never to alter 
a procedure's formal parameters within the procedure; or 
you must, pass your variables by value only. But how to do 
that? 

If you typed: test2 1,2,3, what do you think happens to 
a, b, c? Well, their values are simply thrown away 
when the routine returns. By extension, the same 
holds good for: test2 p+l,q+l,r+l, having previously set 
p, q, r to some value. Anything other than a variable is 
considered an expression in this context, and can therefore 
not receive a return value. 
Thus: 

10x=l:y=2:z=3 
20 test2 (x),y+0,z A l 
30 print x,y,z 

1 2 3 <- prints out x, y, & z, as expected 
1 2 3 <- prints out x, y, & z, as expected(?) 
Good programming practice would avoid altering the 
parameter variables - copy their values into LOCal 
variables instead! In my opinion, test2 (x),(y),(z) gives 
the clearest indication of intent, besides being (marginally) 
faster than say, x+0,y+0,z+0, and so is a good convention 
to adopt for call by value. 

Winter 1998 



«< Coercion »> 

There are other "oddities" about the way parameter 

passing works. For example: 

10x$=*a':y=3:z%=3 

20 test3 x$,y,z% 

30 print x$,y,z% 

99 : 

100 defproc test3(a,b,c) 
110 print a,b,c 

120a = a&a:b = b/2:c = c/2 

130 enddef 

140: 

RUNning this program produces: 
a 3 3 <-x$ y z% 
aa 1.5 2 

Not what you'd think, looking at the formal parameters a, b, 
c! However, this can be very useful, as will be shown later. 
Things to watch out for though are: You may assume that 
the formal parameter decides the type, when it actually is 
the calling parameter that does so! An example might be: 
10x=l:y=4 
20fast_testx,y,10 

99 : 

100 defproc fast_test(a%,b%,c%) 
110 rep loop 

120 a%=a%+l:b%=b%+b%:c%=c% div 3 
130 if c%=0:exit loop 
140 endrep loop 
150 enddef 
160 : 

You're expending all this effort optimizing fast Jest; 
changing out floating point variables with integers, and the 
like. You need not have bothered! This is what it's actually 
doing: 

120 a=a+l :b=b+b:c=c div 3 

In fact everything runs in (relatively) slow floating point! 
The correct moves are: 
10x%=l:y%=4:z%=10 
20 fast_test x%,y%,z% 
will pass integers to fast_test, and/or 
100 defproc fast Jest(a%,b%,c%) 
1101ocr%,s%,t% 

1 20 r%=a%: s%=b%:t%=c% etc. . 

What you then use in the formal parameter list is 
irrelevant (except as a reminder as to what the 
correct type should be!) Also copying the 
parameters into LOCal variables will coerce the parameters 
back to the desired type. In tk2 there are commands to test 
the parameters that are passed to a procedure: PARTY? 
tells you the actual parameter type (nul (never nul in 
SBASIC), string, float, or integer) and PARUSE whether 
the parameter is an array or not. 

< Returning Values through the Parameter List > 
A "by-product" of the ability to pass parameters by 
reference, is that we can actually return more than one 
value to the calling program. Both functions and 
procedures can be used for this. I find the 

function_error = Function(update-able parameter list) 
construct particularly useful, as I hope to show. Below 
follows a commented listing on a filename parsing utility 
for S*BASIC that hopefully illustrates the technique : 
1 PRINT, '(Simplyfied) Filename Parser' 



2 REMark ©OPWitte 1 998 

3 PRINT, ! ! ! ! ! PD - No Warranties' ! ! ! ! ! 

4 : 

5 dfnm$- win l_bas_util_fnm_ParseFnm_bas' 

6 er=ParseFnm(dfhm$,ddev$,ddir$,dnm$,dext$) 
7PRINT\\ , Fnm: , tdfhm$\\ , Dev: , !ddev$\ , Dir: , !ddir$\ 

8 PRINT , Nme: , !dnm$Vxt: , ]dext$VErr. , !er 

9 STOP 
10: 

Above. The first part of the program gives some 
information, and shows and example of usage. 

32724 DEFine FuNction ParseFnm(f$,v$,d$,n$,e$) 

This part of the program is the object of the enterprise; the 
file name parser itself. Due to the nature of the QL's file 
system (FS), it is impossible to determine how much of the 
latter part of the name is filename and how much is 
directory name merely by inspecting the filespec. You 
have to actually open the file (or its directory) to find out , 
The function does this, and then breaks up the filespec 
according to a mixture of known facts and assumptions 
(i.e., it's not foolproof!) It puts the different sections into the 
supplied variables, and returns ok. 

The function is defined as a floating point function, 
even though its main task is to manipulate, and you 
might say, return text. In this, simplified, version 
any values pre-supplied in v$ ...e$ are overwritten. The 
only parameter you should supply is the f$ (for Full 
" Filespec) This is (more or less) expected to be in the form 
of: 

key: <> = name, | = or; [j = optional (0.. 1); 
{} = repeated (0. ) 
<sep> = directory separator, '_' 
<exsep>= extension separator, '_ 1 .' (SMSQ/E) 
<filespec> = 

<device name><drive number (1..8)><sep> 
{<directory section><sep>} 
[<filename>[<exsep>[<extension>]]] 

32725 LOCal c,t,p%,i% 

32726 REMark Split filename into components 

32727 c=FOP_DTR(f$):IF c<0:RETurn c 

FOP_DIR is a function (introduced in Toolkit LTI (tk2), by 
Tony Tebby, and included with many disk interfaces, and 
in SMSQ*). It tries to make the best of the information 
supplied, and will open the first directory that matches the 
first part of the filespec. So if you have a directory 
called 'winl_asm_' (but none called 'win! _asm _prg_...') 
and you did a ERT FOP _D3R(winl _asm_prg_temp) the 
function would open directory 'winl_asm_' taking the rest 
of the filespec to be a filename! 

32728 d$=FNAME$(#c):CLOSE#c 

FNAME$ (also a function from tk2) returns the name of 
any file, also directory files. So, continuing our specific 
example above, d$ (for Directory) would how contain 'asm' 
- Note the device name is not returned. 

32729 IF LEN(d$) THEN 

FNAME$ did return (at least the first) part of the directory 
name, e.g. 'asm'. 

32730 p%=d$ INSTR f$:IF p%=0:RETurn -7 

If the filename returned by FN AMES is, after all, not in the 
filespec return the error Not Found. 
(This would be the case if you tried to: 
DATA USE 'winl asm 1 



ZXir QLive Alive! 



16 



Winter 1998 



ERT F0P_DIR(#3, , abc_test , ) 
FNAME$(#3) would then return 'asm') 
32731 d$=d$&*_' 

If d$ _is_ a substring of filespec, append the filename 
separator (as the last one is not stored in the directory 

file). 

32732 ELSE 

At this point d$ is " This could mean that <root> had 
been specified; that no matching directory was 
found (e.g. had we specified 'winl_prog_temp_..' 
and there was no *winl_prog_./ ); or that something 
was wrong. 

32733 p%=0JINSTR f$)+l 

Do a primitive test on the filespec to see if it contains a 
devicename, e.g. 'winl ..'. 

32734 END IF 

32735 v$=REMV$(p%,LEN(f$),f$) 
v$ stands for deVicename. v$ gets set to the first part of 
filespec, up to the first underscore. 

32736 IF LEN(v$)<3:RETura -12 
Better would have been: 

32735 IF p%<3 OR p%>5:RETurn -12 
This version of the filename parser doesn't support 
networked drives, so: 

32735 IF p%o5:RETum -12 
would be correct here. Then: 

32736 v$=REMV$(p%,LEN(f$),f$) 
Tests whether the first part of the filespec is a possible 
devicename. (Devicenames can only legally be 3, 4, or 5 
characters long, as in: 'S7J, *n63_*, 'ram2 '. Anything 
other is an error. Further tests should be done here to 
determine whether v$ is legal 1 device name, but there is no 
easy way of knowing for sure. (Try: 
OPEN_NEW#3; 'flp7_test':PRINT FNAME$(#3) and see 
what you get (presuming you don't have an flp7 ) 

32737 IF p%+LEN(d$)=LEN(f$) THEN ' " 

32738 n$=":e$=" 

We allow filespec to be incomplete from devicename 
down. In the case above filespec = device name & 
directory name, i..e. there is no filename and no extension 

32739 ELSE 

32740 n$=REMV$(l,p%+LEN(d$>l,f$) 
There is a name (and possibly an extension). Let n$ (for 
fileName) hold it for now 

32741 p%=0 

32742 FOR i%=LEN(n$) TO 1 STEP -1 

32743 IF n$(i%) INSTR *_.'.p%=i% EXIT i% 

32744 END FOR i% 

Here we just check filename from the end of the string for 
the first V or '_' it encounters. This, it decides, will be the 
extension. 

32745 IFp%=0THEN 

32746 e$=" 
No extension found. 

32747 ELSE 

32748 e$=REMV$(0,p%-l, n $) 

32749 n$=REMV$(p%,99,n$) 
Slice filename into name part and extension part 

32750 END IF 

32751 END IF 

32752 RETurn 0 
Return OK. 



ZXir QLive Alive! 



32753 END DEFine 

32754 : 

The final part of the program is a help-function 
REMOVES (shortened to REMVS in its S*BASIC 
incarnation) all it does is to simplify string slicing by 
encapsulating all the error trapping. It won't be looked at 
here. 

32755 DEFine FuNction REMV$(fr%,to%,str$) 

32756 IF fr%< 2 THEN 

32757 IF to% >= LEN(str$):RETum " 

32758 RETurn str$(to% + 1 TO LEN(str$)) 

32759 END IF 

32760 IF to% >= LEN(str$) THEN 

32761 RETurn str$(l TO fr% - 1) 

32762 ELSE 

32763 RET str$(l TO fr% - 1) & str$(to% + 1 TO 
LEN(str$)) 

32764 END IF 

32765 END DEFine 

32766 : 

The weird numbering scheme is to enable the function to 
be easily MERGEd into a larger program that needs 
it; linenumbers <100 can be removed after testing. 

«< Arrays as Parameters »> 

Also arrays are passed by reference; when you supply an 
array parameter you are allowing the procedure to access 
your actual array. The same rules described above 
regarding type coercion also apply to arrays. 
Unfortunately, S*BASIC provides only limited mass 
operations (for lack of a better term) on arrays though you 
can pretty much slice them up any which way you choose. 
This comes in handy if you want to write your own mass- 
ops in S*BASIC or machine code. You can't do a = b with 
arrays in S*BASIC but you can write your own EQU a TO 
b, which does exactly the same (see commented listing of 
EQU below) 

1 DEVI a$(2,2,2,2,6),b$(2,2,2,2,8) 

2 DIM a(2,2,2,2),b(2,2,2,2) 

3FORi%=0 T0 2:FOR j%=0 TO 2:FORk%=0 TO 
2 FOR 1%=0 TO 

2:a$(i%,j%,k%,3%)='L'&i%&j%&k%&l% 
4 count%=0 

5FORi%=0 TO 2 FOR j%=0 TO 2:FORk%=0 TO 
2:FOR 1%=0 TO 

2 :a(i%,j%,k%,l%)=count% . count%=count%+ 1 
6 : 

Above. Initialize a few test arrays (use plenty of 
dimensions :) Note you'll have to modify all integer 
FOR-loops to make this program run under plain OL 
SuperBASIC! 
10CLS:PRTNTa$,\ 
12er=EQU(b$,a$) 

14 CLS#0:CLS#2:PRTNT#2;b$,\:PRINT#0-er 
16 BEEP 2000,20:PAUSE 
18 CLS:PRINT !a!\ 
20 er=EQU(b TO a) 

22 CLS#2:PRINT#2!bl\:PRTNT#0;er\ 
24 BEEP 2000,20 
26 : 

Test harness. Edit to taste. 

100 REMark EQU SBASIC function to 

101 REMark EQUate two arrays of the 



17 



Winter 1998 



102 REMark same dimensions and type 

103 REMark Requires tk2 or equivalent 

104 : 

105 REMark □PWitte, August 1998 

106 REMark For "educational" purposes only 

107 REMark Use at own risk. No warranties! 

108 : 

Can't say you haven't been warned! 
1000 DEFine FuNction EQU(a,b) 

The idea is to equate array a with array b in a reasonably 
rational manner, while demonstrating some of the niceties 
of parameter passing techniques using arrays, at the same 
time. 

The first thing to note is that EQU will handle any 
type of array i.e., integer, sting, & float - although 
the parameter list only shows float! Also, any 
number of dimensions are handled. The only provision, in 
this implementation, is that they are of the same type and 
have the same number and size of dimensions (except 
string, in the last dimension). 
lOlOLOCaler 

This nice little feature of "inheritance" is not documented 
anywhere, as far as I know: 

A LOCal variable defined in one procedure will remain 
local in any procedure called by that procedure, unless 

the variable has been "re-defined" by a subsequent use of 
LOCal. 

Here the local variable, er (error flag) is set in EQU, 
the calling function, and modified in EQN/EQS. 
Yet a variable er, defined in the initial code, 
outside any procedure body, would retain its original 
value. The only danger lies in that if the same sub- 
routines were to be reused by another procedure, you may 
forget to declare it as LOCal in the calling procedure and 
end up mysteriously modifying a GLOBal variable instead! 
It certainly saves the repeated overhead of stacking a local 
variable for each recursive call to EQN/EQS here, as 
would be the case if we defined er EQN/EQS. 
1020 IF PARTYP(a)<>PARTYP(b): RETurn -15 
1030 IF PARUSE(a)oPARUSE(b):RETurn -17 
Checks whether parameters are arrays, and of the same 
type. The error checking here is not foolproof. 
1040 er=0 

1050 IF PARTYP(a)=l THEN 
1060 RETura EQS(a,b) 
1070 ELSE 

1080 RETurn EQN(a,b) 
1090 END IF 

String arrays must be handled slightly differently to 
numeric ones, in that the last dimension is the string 
itself. It might be possible to find a universal algorithm, to 
handle numbers and strings, but it makes sense to use the 
built-in mass assignment features and copy whole strings at 
once, rather than byte by byte. So the string and numeric 
sides have been implemented as separate functions. 
Another advantage is that this offers the opportunity to 
optimize them (how ever slightly) for their different uses. 
11 00 END DEFine 
1110 : 

2000 DEFine FuNction EQN(a,b) 
2010 LOCal i% 

Another reason for separating out these sub-routines as 



functions, is that we can take advantage of the 
interpreter's excellent array slicing abilities, as in line 2070. 
2020 IF DIMN(a)oDIMN(b):RETurn -4 

Every dimension has to match in size, This test will 
be performed before any processing takes place. The 
alternative would be to use a special sub-routine. 
2030 IF DIMN(a(0))=0 THEN 

Look-ahead: If the next dimension is past the last, then 

this is the dimension we can work with: 

2040 FORi%=0TODIMN(a):a(i%)=b(i%) 

Copy this dimension from b to a, element by element. 

This also terminates recursion at this level. 

2050 ELSE 

2060 FOR i%=0 TO DIMN(a) 

2070 er=EQN(a(i%),b(i%)):IF er<0:EXITi% 

2080 END FOR i% 

More than anything, a function like EQU wants speed, 
so loops have been specialized, reducing the overheads of 
test & branch. The use of recursion is almost necessary, 
thanks to the parser's array-slicing abilities! 
2090 END IF 
2100 RETurn er 

The error-checking stuff is not strictly necessary in 
a programming toolkit - error-checking is 
performed at the program level - but it's easier to 
delete it than add it when needed (e.g. during program 
development). 
21 10 END DEFine 
2120 : 

3000 DEFine FuNction EQS(a,b) 

Pretty much the same as for EQN above, but optimized 
for string operations. 
3010 LOCal i% 

Note that the same technique cannot be used for i% as er 
i%'s value will be different at different levels of 
recursion i.e., i% has to be saved between levels. 
3020 IF DIMN(a)<>DIMN(b):RETurn -4 
3030 IF DIMN(a(0,0))=0 THEN 

This arrangement was actually a bug, as no 
comparison is made on the last dimension. 
However, as the interpreter doesn't complain and 
simply ignores any supernumerary characters, I thought 
I'd leave it there as a feature. 

le, DIM a$(5,10),b$(5,8): er=EQU(b$,a$) 
works, though any strings longer than eight characters will 
be truncated. 

3030 IF DIMN(a(0,0))=0 THEN 

Remember a() refers to an array of type string! Operations 

can be performed at a higher structural level, so we 

terminate recursion one level up. 

3040 FOR i%=0 TO DIMN(a):a(i%)=b(i%) 

Copy one whole string at a time 

3050 ELSE 

3060 FOR i%=0 TO DIMN(a) 

3070 er=EQS(a(i%),b(i%)):IF er<0:EXIT i% 

3080 END FOR i% 

3090 END IF 

3 100 RETurn er 

3 110 END DEFine 

3120: 

Genuine bug/incompatibility reports, suggestions and 
comments welcome. Send to pjwitte@knoware.nl 



ZXir QLive Alive! 



18 



Winter 1998 



Unclassified 



Ads 



Place your ads here, it is FR E 17 

Mail to: A. KAHALE 3343 S FLAT ROCK CT SIERRA VISTA AZ 85650-6874 



SPECTRUM for your 2068 

If you are a LarKen LK-DOS owner and would like to run SPECTRUM 
programs on your system, we will supply a V2 EPROM, socket and 
74HCT32 for $12 which includes shipping and handling. The instal- 
lation instructions are in your LarKen manual. We shall not be respon- 
sible for your install job. AERCO owners need only the EPROM for 
$ 1 0 forwarded to LarKen. 

Bob Swoger Address on page 2 

747 Jfltgrji ^Simulator 

So you like to fly, the 747 Flight Simulator for SPECTRUM by Derek 
Ashton of DACC. Requires a SPECTRUM equipped 2068 Supplied 
on LarKen SSDD or DSDD LarKen disk for $10 which goes to Derek 
now working at Motorola with Bob. 

, BobSwoger Address on page 2 

A Strategic Generic War Game for the TS-2068 
C ON© U C $ I 

> Available on tape, or disk, AERCO, Oliger. Game and map 
SAVEs in BASIC allows conversion to your system. 

> Completely in fast machine code. Games can be SAVEd and 
CONTINUEd. Price $19.95 + $2.50 S&H. 

Order from:- or> 

Lloyd Dreger SMUG 

2461 S. 79th St Box 101 

West Allis Wl 5321 9 Butler Wl 53007 

The John Oliger Co. 

11601 Widbey Dr. 
Cumberland IN 46229 
The John Oliger Floppy Disk System 
FOR THE TS-2068 
Disk Works 
Expansion Board 
2068 User Cartridge 
Disk Boards "A" & "B" 
2068 Parallel Printer Port 
2068 EPROM Programmer 
2068/SPECTRUM Joystick Port 
DFh Mapped Universal I/O Port board 
Us£ r ^l2222L22lLLllQQ_^^ (Read before you buy) 

Service For America's 
Favorite Home Computers and Their Accessories 



I N C LAI 

TIMEX ADAM ATARI IBM OSBORNE 
TI COMMODORE TRS-80 
BUY SELL TRADE UPGRADE 

ZXir QLive Alive! ' " 




Repair Charge Examples 
TS-1000, ZX-81, 1016 RAMPack, Memotech, ZEBRA Talker, 
MIRACLE Centronics, RAM Centronics 
$5.00 each + parts & shipping. 
TS-2020, 2040, PC-8300, ZX-80, TT-99, Z-SIO, Byte-Back, 
AERCO 2068 Centronics, BASICare, LarKen RAMDisk 
$10.00 each + parts & shipping. 
TS-2068, Spectrum, A&J MicrD, Miracle 51 2K, LarKen 1000 
& 2068 EDI, Kempston FDI, Cumana FDI, CST EDI, 
$15.00 each + parts & shipping . July 1,1996 

Reasonable flat rate plus parts and shipping. 
Write or call for prices , SASE appreciated 

COMPUTER 



CLASSIC 

RT1, Box 117 
Cabool MO 65689 

Phone 417 469-4571 417 467 -457 1 

ZX-TEXT - Word Processor 
ZX-CALC - Spreadsheet 
Business Software 

Cycle Accounting Financial Report Generator 
ZX-CALENDAR - Time Management 
ZX-81 TS-1000 TS-1500 TS-2068 

Albert F. Rodriguez 

A.F.R. Software® 

1605 Pennsylvania Ave 204 
Miami Beach FL 33139 

305 531-6464 

QLAMBer $20 

QLuMSi $20 

SeekQL $10 

Upgrades $5 



PLATYPUS 

: 

SOFTWARE : 



□ 



V- 



fit feng 

914 Rio Vista Cir SW 
Albuquerque NM 87105 
(505) 843-8414 



19 



Winter 1998 





& 

Bill Cable 

ARCHIVE Based QL Software 

QLerk - A complete financial program for the QL 



QLerk software (v3.21) with tutorial 
QLerk manual 
QLerk software & manual 
DBEasy - A menu based database system 
DBEasy software (v1 .6) 
DBEasy upgrade from V1 .5 
DBProgs - A toolkit of ARCHIVE procedures 
DBProgs software (v1.8) 
DBProgs upgrade from V1 .7 $7 
DBTutor - A general purpose learning program 

DBTutor software(v1 .5) 
PC DBEasy - Just like QL DBEasy but, you must have 
PC ARCHIVE to use It. 

PC DBEasy software (v1.3) 

Wood & Wind Computing 
RR3 BOX 92 
Cornish NH 03745 USA 
Phone (603) 675-2218 
Email : bcabie@triton.coat.com 



$29 
$29 
$50 

$24 
$7 

$18 



$12 



$12 





810 254-9878 
14 hours a day 
300 to 28,800 bps 

Supporting all Sinclair and Timex users Fidonet 
echomail areas for Sinclair computers Lots of new 
files for you to download such asTS-2068 emulator 
for those who use a PC give us a call and let us 
know what you want to see 
Message area and file area 
QL International, Quanta, QL Hacker's Journal, 
Spectrum/2068, ZX-81/TS-1000, Z88, NetMail, 
emulators, pointer, FDFormat for QXL/QDOS, etc. 
Sysop John J Impellizzeri 
Co-Sysop Don Walterman 
Uti c a, Michigan 7 US A 

ID c m i n o C u lb e s 



Hardware 5 Software 

352 7 th Ave. 15 th Fir. 
New York, NY 10001 
Phone 212 631-7563 
Fax 212 947-5069 Voice mail pager 917 490-8407 
Domino.cubes(5>excelsior net 



Make David an Offer 
ZX-81/TS-1000 TS-2068 
Hardware Kits 
Real Time Clock I/O Controller RS-232 
Centronics l/F 1 6K & 64K RAM 300 BAUD 
Modem A-D Converter(assembled) 

BYTE-BACK INC 

536 Long Ter 
Leesville SC 29070 

LISTing Newsletter 

Tlie Long Island Suiclaii/Ximex \J- 

Robert Malloy, Treasurer 
412 Pacific St. 
Massapeque Park, NY 11762 



Robert Gilder 




New England Sinclair QL Users Group 
16 Highland Ave 
Saugus MA 01906 
617 233-3671 

QL Hacker's Journal 

Supporting All QL Programmers 
Timothy Swenson, Editor 

2455 Medallion Dr. 
Union City, CA 94587 
swensontc@geocities com 
http :://www. geocities. com/ SilconValley/Pines/5 865/ 

CATS Newsletter 

The Capital Area T/S Users Group 

Barry Washington 
7044 Cindy Ln 
Annandale VA 22003 
301 589-7407 
BBS 301 588-0579 
Internet mfU002@epfl2 . epflbalto. org 




Chicago Area Timex Users Group 

Robert Swoger 
613 Parkside Cir 



ZXir QLive Alive! 



20 



Winter 1998 



Streamwood IL 60107-1647 

630 837-7957 
CENG-108@emai I . mot., com 



The Ram top 

Newsletter 

The Greater Cleveland T-S User Group 

Thomas Simon Editor 

615 School Ave 
Cuyahoga Falls OH 44221 
E-Mail CIS 73177,333 

Jon Kaczor Production 
4568 Williamson Ave 
Brooklyn OH 44144 
75363.1 127@compuserve.com 




Peter Liebert-Adelt 
LUETZOW STR 3 
D-38102 BRAUNSCHWEIG 

GERMANY 
Email: p.liebert@t-online.de 
http://home.t-on]ine.de/home/p.liebert/zx-teara.htm 
Amateur Radio: DK4BF@DB0FC.#NDS.DEU.EU 



Conner QIC-80 tape backup (kit) with four 

new (sealed) pre-formatted tapes very little use $75.00 (In- 
cludes shipping) 

Al Feng 
914 Rio Vista Cir SW 
Albuquerque, NM 87105 
(505) 843-8414 

WANTED: Cartridges! For the TS2068: VU-Calc, VU- 
File, Budgeter, Pinball, Androids, Penetrator, Zebra OS-64, 
LarKenLKDOS, Oliger JLODOS, Spectrum ROM, Backgam- 
mon, Blind Alley, Chess, Hungry Horace, Horace & the Spi- 
ders, Horace Goes Skiing, Zeus Assembler, Zeus Hi-Monitor, 
Zeus Lo-Monitor; also EPROMs for the EPROM module. For 
TS 1000/1 500: TS1510 cartridge module; cartridges Chess, Su- 
permath, States & Capitals, Flight Simulator; Rompak Eprom- 
Holder Cartridge and any EPROMs. 

Russ Perry Jr. 
2175 S Tonne Dr#105 
Arlington Hts, !L 60005 

847-952-9729 
siapdash@enteract. com . 



LogiC 



Tlae Final Versi 

Newly updated, easy-to-read, LarKen 
LKDOS ver. 3 Manual 

Includes missing information related to the JLO and the 
Tasman 'B' CPI, mouse and re-numbering program. 

Updated version 6.0 LogiCall Manual 



with sections on utilities and BASIC drivers for 
modified commercial software and switching system 
ROMs without powering down. 

Available for $15 from 

FWD Computing 

Items for the T\S Computers 

Timeworks Programming kit #1 For T/S 1000 & ZX81 $4.95 
Mindware Gulp Game Timex 1000 & Sinclair ZX81 $4.95 
Timex Horace & The Spiders for the 2068 $5 95 
Timex Sinclair 1000 software on tape 
Chess (16K RAM) qty 5 price $2.95 ea 
The Challenger I qty 17 price $2.95 ea 
Mindware MW100 plain paper printer for the TS1000 or 

ZX81 computer made in the US. $45 .00 
All items are new. Please add $3 95 shipping to all orders. 
MC, VISA, American Express, phone 717-748-1747 

Keith Electronics 
224 North Grove St 
Lock Haven, PA. 17745 

The ZX Spectrum 48/128 Emulator 

for IBM & Compatables: Z80 Version 2.01 
Turn your PC into a real ZX Spectrum 48/128! 
=*- Full Spectrum emulation, border, flash, beeper, Interface 1, 
Microdrive in cartridge file, RS232 input and output redirection 
to file, COM or LPT, joystick support, 128K sound through 
Soundblaster or internal speaker, built-in monitor, 
=*- Able to load ANY, even protected or speed-saved program 
from tape, to save to tape, to redirect tape loads and saves to 
disk for easy file access, 
=*- 2500 line English documentation. 

=*- Z80 processor amulabon including R register, inofficial in- 
structions, inofficial flags, 

=*- Runs okay under DOS, Windows and DesqView, 
=*- Full source code of emulator and utilities included! 
Runs on any 640K PC; too slow for practical use on PC/XT's 
but fast enough on AT's ; runs at about 100% on 16MHz AT's 
(can be slowed down on faster machines), uses 
VGA/EGA/CGA or Hercules. 
This program costs US $20. You will receive a 3.5" DD disk 
(5.25" disks on request), and you'll be kept informed about up- 
dates. Please send bank notes (bills), name and address to: 

Gerton Lunter 

PO Box 2535 
NL-9704 CM Groningen 
Netherland 

If you send a cheque, please add US $15 extra and allow 4 
weeks for delivery 



ZXir QLive Alive! 



21 



The RomDisk! Fully functional! 

See previous issue of QL Today Extremely small board for the 
QL's ROM-Port, works like a permanent RAM disk, even if the 
power is taken away, contents are not lost! 
RomDisk 2 MB DM 129 

RomDisk 4 MB DM 199 

RomDisk 8MB DM 299 

Aurora Adapter for RomDisk DM 9 90 

Special Offer 

The color drivers are coming. In or der to be able to upgrade to 

Winter 1998 



the color drivers, you need to have SMSQ/E. The normal 
SMSQ which is shipped with QXL card will not be able to han- 
dle more colors. To benefit from the colors in the future, and 
benefit now from the extra features of SMSQ/E, here is a 

special offer: 

SMSQ/E for the QXL 
Only DM 169. 

As Aurora owners will be able to use more colors when the 
color drivers are available, another offer for SMSQ/E for the 
Aurora plus GoldCard/Super/GoldCard; 

SMSQ/E for the Super GoldCard 

QL Games & Upgrades 

QL Applications 
ProWesS + Applications 
Jochen Merz Software 
Im stillen Winkel 12 
47169 Duisburg, Germany 
© 0203-502011 
Fax 0203-502012 
Credit Cards accepted 
http://www.j-m-s.com/smsq/ 
e-mail smsq@j-m-s.com 





Who is doing it? 

QL Today is being published by Jochen Merz Software. 
Jochen Merz has been supplying software for the QL for several 
years and has built up a good reputation for quality and fair 
trading. The representative in Britain is Miracle Systems Ltd. 
who take subscriptions and do the distribution. The articles in 
the magazine are written by a number of prominent QLers and 
the editor is Dilwyn Jones. 

Subscriptions 

Germany (+German add-on) DM 70 
England DM 60 £25 

Rest of the world DM 70 £30 

Back-issues are available for DM 12 (incl. postage) 
Checks should be made payable Miracle Systems Ltd. 

English Office 

Miracle Systems Ltd. 

20 Mow Barton 
Yates, Bristol 
United Kingdom BS17 5NF 
Tel. +44 1454 883602 Fax. +44 1454 883602 

Editor 

Dilwyn Jones 
41 Bro Emrys 
Tal-Y-Bont, Bangor, Gwynedd 
United Kingdom LL57 3YT 
Tel. +44 1248 354023 Fax. +44 1248 354023 



$30 Plus $10 
for shipping and handling 

TS-2040 Printers 16K RAM 

We Do Not Ship Outside The US & Canada 

Checks, Money Orders and Visa or Mastercard 
Call 212-675-8414 FAX 212-675-8980 

Zebra Systems, Inc. 
122 W26th St. Suite. 904 
New York, NY 10001 

Shipping is by UPS ground. 
Basics of Timex Sinclair 1500/1000 BASIC 

A copy of this book is shipped free with each ZX-8 1 kit 
Allen Wolach, Separately priced $12 95 
BASIC Basics for the Timex/Sinclair 1500/1000 
A copy of this book is shipped free with each ZX-8 1 kit. 
Michael Barnett//Simon Barnett, Separately priced $12.95 
The Ins and Outs of the Timex TS-1000 & ZX-81 
Don Thomasson, $12.95 
Computer Interfacing Technique in Science TS-1500/1000 
Paul Field & John Davies, $12 95 
ZX-81 BASIC Programming (in Spanish language) 
Steve Vickers (Traducido y adaptado) A copy of this book is 
shipped free for asking if you just pay for additional shipping 
cost. Separately priced $10 

Alec Carswell 

MOTIVATION 

1 6 Montgomery Ave 
Beith Ayrshire KA15 1EL 
United Kingdom 

Sinclair Resources 

Jack Dohany (Developer - 2068) 
627 Vera Ave 
Redwood City CA 94061 

John McMichael (Developer - Graphics) 
1710 Palmer Dr 
Laramie WY 82070 

Bill Russell (QL) 
Russel Electronics 
RR 1 Box 539 
Center Hall PA 16828 

Keith Watson 
AERCO & Z80 Emulator 

41634 Amberly Dr. 
Mt. Clemens, Ml 48038 

RodGowen (RMG) 
14784 S Quail Grove Cir 
Oregon City OR 97045-8843 

Send them a LSASE and ask for information about 
their current products and/or services. 



ZXir QLive Alive! 



22 



Winter 1998